///*******************************************************************************
// * Copyright (c) 2006 IBM Corporation and others.
// * All rights reserved. This program and the accompanying materials
// * are made available under the terms of the Eclipse Public License v1.0
// * which accompanies this distribution, and is available at
// * http://www.eclipse.org/legal/epl-v10.html
// *
// * Contributors:
// *     IBM Corporation - initial API and implementation
// *******************************************************************************/
//
//package org.eclipse.ui.tests.operations;
//
//import org.eclipse.core.commands.ExecutionException;
//import org.eclipse.core.commands.operations.IUndoContext;
//import org.eclipse.core.commands.operations.IUndoableOperation;
//import org.eclipse.core.commands.operations.IOperationHistory;
//import org.eclipse.swt.widgets.Display;
//import org.eclipse.ui.IWorkbenchWindow;
//import org.eclipse.ui.ide.IDE;
//import org.eclipse.ui.tests.harness.util.UITestCase;
//
///**
// * Stress tests the Operations Framework API to find any interaction problems
// * with the workbench.
// * 
// * @since 3.1
// */
//public class WorkbenchOperationStressTests extends UITestCase {
//
//	static int STRESS_TEST_REPETITIONS = 2000;
//
//	static int OPEN_WINDOW_REPETITIONS = 2;
//
//	/**
//	 * @param testName
//	 */
//	public WorkbenchOperationStressTests(String name) {
//		super(name);
//	}
//
//	/*
//	 * Exercise the operations history just before closing the workbench. This
//	 * can find problems with the action handlers assuming a workbench is open.
//	 * 
//	 * In progress - this still isn't catching the case from the bug, but is a good
//	 * start.
//	 */
//	public void test115761() throws ExecutionException {
//		for (int j = 0; j < OPEN_WINDOW_REPETITIONS; j++) {
//			IWorkbenchWindow secondWorkbenchWindow = null;
//			secondWorkbenchWindow = openTestWindow(IDE.RESOURCE_PERSPECTIVE_ID);
//			Display display = secondWorkbenchWindow.getShell().getDisplay();
//			IOperationHistory workbenchHistory = secondWorkbenchWindow
//					.getWorkbench().getOperationSupport().getOperationHistory();
//			IUndoContext workbenchContext = secondWorkbenchWindow
//					.getWorkbench().getOperationSupport().getUndoContext();
//			workbenchHistory.setLimit(workbenchContext, STRESS_TEST_REPETITIONS);
//
//			for (int i = 0; i < STRESS_TEST_REPETITIONS; i++) {
//				IUndoableOperation op = new TestOperation("test");
//				op.addContext(workbenchContext);
//				workbenchHistory.execute(op, null, null);
//			}
//			for (int i = 0; i < STRESS_TEST_REPETITIONS; i++) {
//				if (i % 2 == 0) {
//					workbenchHistory.undo(workbenchContext, null, null);
//				}
//				if (i % 5 == 0) {
//					workbenchHistory.redo(workbenchContext, null, null);
//				}
//			}
//
//			secondWorkbenchWindow.close();
//			boolean go = true;
//			while (go) {
//				go = display.readAndDispatch();
//				
//			}
//		}
//	}
//}
